from DrissionPage import ChromiumOptions

from lib.utils.config_loader import load_config


def launch_chromium():
    """
    设置Chromium浏览器启动参数

    参数:
    chrome_config: 一个字典，包含Chromium浏览器的启动配置信息，如浏览器路径、缓存路径、扩展程序等。

    返回值:
    返回一个配置好的ChromiumOptions对象，包含了浏览器启动时所需的参数设置。
    """
    # 配置文件的路径
    chrome_config = config_load()

    # 创建ChromiumOptions对象用于设置浏览器启动参数
    chrome_launch_config = ChromiumOptions()

    # 根据配置信息设置浏览器路径、缓存路径、临时文件路径、用户数据目录、代理服务器、本地端口以及扩展程序
    if 'path' in chrome_config and chrome_config['path'] != '':
        chrome_launch_config.set_browser_path(chrome_config['path'])
    if 'cache_path' in chrome_config and chrome_config['cache_path'] != '':
        chrome_launch_config.set_cache_path(chrome_config['cache_path'])
    if 'tmp_path' in chrome_config and chrome_config['tmp_path'] != '':
        chrome_launch_config.set_tmp_path(chrome_config['tmp_path'])
    if 'user_data_dir' in chrome_config and chrome_config['user_data_dir'] != '':
        chrome_launch_config.set_user_data_path(chrome_config['user_data_dir'])
    if 'proxy' in chrome_config and chrome_config['proxy'] != '':
        chrome_launch_config.set_proxy(chrome_config['proxy'])
    if 'local_port' in chrome_config and chrome_config['local_port'] != '':
        chrome_launch_config.set_local_port(chrome_config['local_port'])
    # 添加可能的扩展程序，包括会话页面助手、vytal和webRTC
    if 'saossionpage_helper' in chrome_config and chrome_config['saossionpage_helper'] != '':
        chrome_launch_config.add_extension(chrome_config['saossionpage_helper'])
    if 'vytal' in chrome_config and chrome_config['vytal'] != '':
        chrome_launch_config.add_extension(chrome_config['vytal'])
    if 'webRTC' in chrome_config and chrome_config['webRTC'] != '':
        chrome_launch_config.add_extension(chrome_config['webRTC'])

    # 返回配置好的ChromiumOptions对象
    return chrome_launch_config


def config_load(config_file_path='chrome.ini'):
    """
    读取Chrome配置文件信息。

    参数:
    config_file_path: 字符串，指定配置文件的路径。

    返回值:
    一个字典，包含从配置文件中读取的Chrome配置信息，包括路径、用户数据目录、缓存路径、临时路径和代理设置等。
    """
    # 创建配置解析器
    # 指定外部配置文件路径
    config_file = load_config(config_file_path)

    # 从配置文件中读取指定的Chrome配置项
    chrome_config = {
        'path': config_file.get('Chrome', 'path', fallback=''),
        'user_data_dir': config_file.get('Chrome', 'user_data_dir', fallback=''),
        'cache_path': config_file.get('Chrome', 'cache_path', fallback=''),
        'tmp_path': config_file.get('Chrome', 'tmp_path', fallback=''),
        'proxy': config_file.get('Chrome', 'proxy', fallback=''),
        'local_port': config_file.get('Chrome', 'local_port', fallback=''),
        # 添加Chrome扩展的配置项
        'saossionpage_helper': config_file.get('ChromeExtension', 'saossionpage_helper', fallback=''),
        'vytal': config_file.get('ChromeExtension', 'Vytal', fallback=''),
        'webRTC': config_file.get('ChromeExtension', 'webRTC', fallback=''),
        # 根据需要添加更多的配置选项
    }
    return chrome_config
